package leetcode.editor.cn;

/**
 * [7]整数反转
 * reverse-integer
 */
//给你一个 32 位的有符号整数 x ，返回将 x 中的数字部分反转后的结果。 
//
// 如果反转后整数超过 32 位的有符号整数的范围 [−231, 231 − 1] ，就返回 0。 
//假设环境不允许存储 64 位整数（有符号或无符号）。
//
// 示例 1：
//输入：x = 123
//输出：321
// 示例 2：
//输入：x = -123
//输出：-321
// 示例 3：
//输入：x = 120
//输出：21
// 示例 4：
//输入：x = 0
//输出：0
//
// 提示：
// -231 <= x <= 231 - 1 
// 
// Related Topics 数学 
// 👍 2736 👎 0

public class LC007_ReverseInteger {
    public static void main(String[] args) {
        Solution solution = new LC007_ReverseInteger().new Solution();
        int result = solution.reverse(210);
        System.out.println(result);
    }

    //leetcode submit region begin(Prohibit modification and deletion)
    class Solution {
        public int reverse(int x) {
            try {
                //标记x是不是负数
                boolean isMinus = false;
                //x是负数则取相反数，并标记为负数
                if (x < 0) {
                    x = -x;
                    isMinus = true;
                }
                //将数字x转换为字符串并创建StringBuilder
                StringBuilder sb = new StringBuilder(String.valueOf(x));
                //如果是负数则在sb的尾部加上负号
                if (isMinus) {
                    sb.append("-");
                }
                //反转并转换为字符串，解析这个字符串的值并返回
                return Integer.parseInt(sb.reverse().toString());
            } catch (NumberFormatException e) {
                //解析发生异常说明超过范围，返回0
                return 0;
            }
        }
    }
    //leetcode submit region end(Prohibit modification and deletion)

}